// const baseUrl = 'https://obuge.com/juzao'
const baseUrl = 'http://localhost:3000'

let interceptors = { ///拦截器
  request(req) {
    return new Promise(next => {
      req.url = /^http/.test(req.url) ? req.url : baseUrl + req.url,
        req.header = req.header || {}
      if (wx.token) req.header.token = wx.token
      next(req)
    })
  },
  response(res) { ///响应拦截器
    return new Promise(next => {
      if (res.statusCode == 404) {
        next({
          errorMsg: '请求接口不存在'
        })
      } else if (res.statusCode == 500) {
        next({
          errorMsg: res.data || '服务器错误，请联系网站管理员'
        })
      } else if (res.statusCode == 200) { ///正常业务
        next(res.data)
      } else {
        next({
          errorMsg: res.errMsg || '未知错误'
        })
      }
    })
  }
}

function GET(url, query, args) {
  args = args || {}
  return new Promise((resolve, reject) => {
    interceptors.request({
      url,
      ...args
    }).then(req => {
      wx.request({
        ...req,
        data: query,
        method: 'GET',
        success: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        },
        fail: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        }
      })
    })

  })
}

function PUT(url, data, args) {
  args = args || {}
  return new Promise((resolve, reject) => {
    interceptors.request({
      url,
      ...args
    }).then(req => {
      wx.request({
        ...req,
        data,
        method: 'PUT',
        success: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        },
        fail: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        }
      })
    })
  })
}

function POST(url, data, args) {
  args = args || {}
  return new Promise((resolve, reject) => {
    interceptors.request({
      url,
      ...args
    }).then(req => {
      wx.request({
        ...req,
        data,
        method: 'POST',
        success: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        },
        fail: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        }
      })
    })
  })
}


function DELETE(url, data, args) {
  args = args || {}
  return new Promise((resolve, reject) => {
    interceptors.request({
      url,
      ...args
    }).then(req => {
      wx.request({
        ...req,
        data,
        method: 'DELETE',
        success: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        },
        fail: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        }
      })
    })
  })
}





module.exports = {
  get: GET,
  put: PUT,
  post: POST,
  delete: DELETE
}